前面兩天我們將新增、讀取的功能寫好了,今天要來繼續來將更新的功能來實作出來~
我們回到 repository/album.go
,來撰寫 Update
的 method
這邊傳入的參數,我們將其型別設為 interface{}
,也就是 any
可以傳入任意型別的資料型態,方便後面要介紹的更新方法
透過 GORM 提供的 Updates
來將要進行更新的資料傳入
// Update 更新資料
func Update(a database.Album, updateData interface{}) {
database.DB.Model(&a).Updates(updateData)
}
回到 main.go
這邊有兩種更新方法,一種是透過 Album struct
,一種是透過 map[string]interface{}
下面就來個別使用看看,前面的 Code 就不贅述了
因為都跟前面的一樣,有需要的可以自行到前一天來做觀看
下面就以主要部分來做說明
Album struct
進行更新// 這邊的 album 變數,是在前面宣告的
repository.Update(album, database.Album{
Title: "LILAC",
Artist: "IU",
ReleaseDate: "2021/03/25",
})
map[string]interface{}
進行更新這邊 map 裡使用的 key 是對應到 SQL 資料庫裡 Album 資料表的欄位名稱
// 這邊的 album 變數,是在前面宣告的
repository.Update(album, map[string]interface{}{
"title": "KILL MY DOUBT",
"artist": "ITZY",
"release_date": "2023/07/31",
})
執行後,就可以將 album
變數輸出出來,確認是否有更新成功啦~
⬆️ 前面兩個輸出結果分別是 ReadAll
與 Read
的,後兩個輸出結果分別是對應到 Album struct
與 map[string]interface{}
以上 Sample Code 可以在我 GitHub 上找到
https://github.com/leoho0722/it15th
今天我們透過 GORM 來實作向 SQL 資料庫進行更新資料
明天要來介紹 CRUD 中的最後一個,也就是 Delete 刪除資料的部分
明天見~